package com.zzyl.nursing.domain;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import com.zzyl.common.annotation.Excel;
import com.zzyl.common.core.domain.BaseEntity;

/**
 * 退住办理对象 check_out
 * 
 * @author Zhy
 * @date 2025-07-13
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("退住办理实体")
public class CheckOut extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    // 主键ID
    @ApiModelProperty("主键ID")
    private Long id;

    // 老人姓名
    @Excel(name = "老人姓名")
    @ApiModelProperty("老人姓名")
    private String elderName;

    // 老人ID
    @Excel(name = "老人ID")
    @ApiModelProperty("老人ID")
    private Long elderId;

    // 身份证号
    @Excel(name = "身份证号")
    @ApiModelProperty("身份证号")
    private String idCardNo;

    // 入住记录ID
    @Excel(name = "入住记录ID")
    @ApiModelProperty("入住记录ID")
    private Long checkInId;

    // 退住床位
    @Excel(name = "退住床位")
    @ApiModelProperty("退住床位")
    private String bedNumber;

    // 退住日期
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "退住日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("退住日期")
    private LocalDateTime checkOutDate;

    // 退住原因
    @Excel(name = "退住原因")
    @ApiModelProperty("退住原因")
    private String checkOutReason;

    // 退住类型(1=正常退住,2=合同到期,3=转院,4=其他)
    @Excel(name = "退住类型", readConverterExp = "1=正常退住,2=合同到期,3=转院,4=其他")
    @ApiModelProperty("退住类型(1=正常退住,2=合同到期,3=转院,4=其他)")
    private Integer checkOutType;

    // 费用结算金额
    @Excel(name = "费用结算金额")
    @ApiModelProperty("费用结算金额")
    private BigDecimal feeSettlement;

    // 押金退还金额
    @Excel(name = "押金退还金额")
    @ApiModelProperty("押金退还金额")
    private BigDecimal depositRefund;

    // 结算状态(0=未结算,1=已结算)
    @Excel(name = "结算状态", readConverterExp = "0=未结算,1=已结算")
    @ApiModelProperty("结算状态(0=未结算,1=已结算)")
    private Integer settlementStatus;

    // 合同终止状态(0=未终止,1=已终止)
    @Excel(name = "合同终止状态", readConverterExp = "0=未终止,1=已终止")
    @ApiModelProperty("合同终止状态(0=未终止,1=已终止)")
    private Integer contractTermination;

    // 终止协议文件路径
    @Excel(name = "终止协议文件路径")
    @ApiModelProperty("终止协议文件路径")
    private String terminationAgreementPath;

    // 状态(0=申请中,1=已批准,2=已退住,3=已拒绝)
    @Excel(name = "状态", readConverterExp = "0=申请中,1=已批准,2=已退住,3=已拒绝")
    @ApiModelProperty("状态(0=申请中,1=已批准,2=已退住,3=已拒绝)")
    private Integer status;

    // 审批人
    @Excel(name = "审批人")
    @ApiModelProperty("审批人")
    private String approver;

    // 审批时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("审批时间")
    private LocalDateTime approvalTime;

    // 审批备注
    @Excel(name = "审批备注")
    @ApiModelProperty("审批备注")
    private String approvalRemark;

    // 排序编号
    @Excel(name = "排序编号")
    @ApiModelProperty("排序编号")
    private Integer sortOrder;
} 